<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>IDA SDK: diskio.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">IDA SDK
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="files.html"><span>Header&#160;Files</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a>  </div>
  <div class="headertitle">
<div class="title">diskio.hpp File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>File I/O functions for IDA. </p>
<p>You should not use standard C file I/O functions in modules. Use functions from this header, <a class="el" href="pro_8h.html" title="This is the first header included in the IDA project. ">pro.h</a> and <a class="el" href="fpro_8h.html" title="System independent counterparts of FILE* related functions from Clib. ">fpro.h</a> instead.</p>
<p>This file also declares a <a class="el" href="diskio_8hpp.html#ad5f565f04c002923eabc3d0ee2738f95" title="Execute a operating system command. ">call_system()</a> function. </p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structioport__bit__t.html">ioport_bit_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Describes an I/O port bit.  <a href="structioport__bit__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structioport__t.html">ioport_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Describes an I/O port.  <a href="structioport__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structgeneric__linput__t.html">generic_linput_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generic linput class - may be used to create a linput_t instance for any data source.  <a href="structgeneric__linput__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlinput__buffer__t.html">linput_buffer_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper class - adapts linput to be used in extract_...  <a href="classlinput__buffer__t.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a16380d8091698918e517829fd3dd2f7f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16380d8091698918e517829fd3dd2f7f"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> const char *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a16380d8091698918e517829fd3dd2f7f">idadir</a> (const char *subdir)</td></tr>
<tr class="memdesc:a16380d8091698918e517829fd3dd2f7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get IDA directory (if subdir==NULL) or the specified subdirectory (see <a class="el" href="group___s_u_b_d_i_r.html">IDA subdirectories</a>) <br /></td></tr>
<tr class="separator:a16380d8091698918e517829fd3dd2f7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a167af169b3e9ef95c00b0c793ddca17b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> char *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a167af169b3e9ef95c00b0c793ddca17b">getsysfile</a> (char *buf, size_t bufsize, const char *filename, const char *subdir)</td></tr>
<tr class="memdesc:a167af169b3e9ef95c00b0c793ddca17b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Search for IDA system file.  <a href="#a167af169b3e9ef95c00b0c793ddca17b">More...</a><br /></td></tr>
<tr class="separator:a167af169b3e9ef95c00b0c793ddca17b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ead839a135d52262c7219dd67465042"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> const char *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a6ead839a135d52262c7219dd67465042">get_user_idadir</a> (void)</td></tr>
<tr class="memdesc:a6ead839a135d52262c7219dd67465042"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get user ida related directory.  <a href="#a6ead839a135d52262c7219dd67465042">More...</a><br /></td></tr>
<tr class="separator:a6ead839a135d52262c7219dd67465042"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade45071848f6972b9ff86c9f2750afcb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#ade45071848f6972b9ff86c9f2750afcb">get_ida_subdirs</a> (<a class="el" href="pro_8h.html#a823b67c620f6cdca97e1d969ea4a9b02">qstrvec_t</a> *dirs, const char *subdir, int flags=0)</td></tr>
<tr class="memdesc:ade45071848f6972b9ff86c9f2750afcb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get list of directories in which to find a specific IDA resource (see <a class="el" href="group___s_u_b_d_i_r.html">IDA subdirectories</a>).  <a href="#ade45071848f6972b9ff86c9f2750afcb">More...</a><br /></td></tr>
<tr class="separator:ade45071848f6972b9ff86c9f2750afcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba3966c5fe94390b019ebb3f6b0adb5e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#aba3966c5fe94390b019ebb3f6b0adb5e">get_special_folder</a> (char *buf, size_t bufsize, int csidl)</td></tr>
<tr class="memdesc:aba3966c5fe94390b019ebb3f6b0adb5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a folder location by CSIDL (see <a class="el" href="group___c_s_i_d_l.html">Common CSIDLs</a>).  <a href="#aba3966c5fe94390b019ebb3f6b0adb5e">More...</a><br /></td></tr>
<tr class="separator:aba3966c5fe94390b019ebb3f6b0adb5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae85c4ea312c786873aebf704c289f57a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#ae85c4ea312c786873aebf704c289f57a">enumerate_files</a> (char *answer, size_t answer_size, const char *path, const char *fname, int(<a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a> *func)(const char *file, void *ud), void *ud=NULL)</td></tr>
<tr class="memdesc:ae85c4ea312c786873aebf704c289f57a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enumerate files in the specified directory.  <a href="#ae85c4ea312c786873aebf704c289f57a">More...</a><br /></td></tr>
<tr class="separator:ae85c4ea312c786873aebf704c289f57a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a549d51c74356478392b1744907728417"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> <a class="el" href="pro_8h.html#a2f5563986d7f95e4fad5876c17d9cdda">uint64</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a549d51c74356478392b1744907728417">qfsize</a> (FILE *fp)</td></tr>
<tr class="memdesc:a549d51c74356478392b1744907728417"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get length of file in bytes.  <a href="#a549d51c74356478392b1744907728417">More...</a><br /></td></tr>
<tr class="separator:a549d51c74356478392b1744907728417"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9aa9645007754c5b00b583ccf9e6092"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#ac9aa9645007754c5b00b583ccf9e6092">echsize</a> (FILE *fp, <a class="el" href="pro_8h.html#a2f5563986d7f95e4fad5876c17d9cdda">uint64</a> size)</td></tr>
<tr class="memdesc:ac9aa9645007754c5b00b583ccf9e6092"><td class="mdescLeft">&#160;</td><td class="mdescRight">Change size of file or die.  <a href="#ac9aa9645007754c5b00b583ccf9e6092">More...</a><br /></td></tr>
<tr class="separator:ac9aa9645007754c5b00b583ccf9e6092"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfb54e29824152262ae08cb0c1f43934"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> <a class="el" href="pro_8h.html#a2f5563986d7f95e4fad5876c17d9cdda">uint64</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#acfb54e29824152262ae08cb0c1f43934">get_free_disk_space</a> (const char *path)</td></tr>
<tr class="memdesc:acfb54e29824152262ae08cb0c1f43934"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get free disk space in bytes.  <a href="#acfb54e29824152262ae08cb0c1f43934">More...</a><br /></td></tr>
<tr class="separator:acfb54e29824152262ae08cb0c1f43934"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a07d4f92a339d4e297ad1c2f4c1762af3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> <a class="el" href="pro_8h.html#ab65ed42d67e6c517c746ff2a6a187016">ssize_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a07d4f92a339d4e297ad1c2f4c1762af3">read_ioports</a> (<a class="el" href="classqvector.html">ioports_t</a> *ports, <a class="el" href="pro_8h.html#a386c10c6aa4340f1d63df85f40454fce">qstring</a> *device, const char *file, const char *(<a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a> *callback)(                               const <a class="el" href="classqvector.html">ioports_t</a> &amp;ports,                               const char *line)=NULL)</td></tr>
<tr class="memdesc:a07d4f92a339d4e297ad1c2f4c1762af3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read i/o port definitions from a config file.  <a href="#a07d4f92a339d4e297ad1c2f4c1762af3">More...</a><br /></td></tr>
<tr class="separator:a07d4f92a339d4e297ad1c2f4c1762af3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d18620a7dc9efd6c4f068315aad6a6d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a4d18620a7dc9efd6c4f068315aad6a6d">choose_ioport_device</a> (<a class="el" href="pro_8h.html#a386c10c6aa4340f1d63df85f40454fce">qstring</a> *_device, const char *file, const char *(<a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a> *parse_params)(                               <a class="el" href="pro_8h.html#a386c10c6aa4340f1d63df85f40454fce">qstring</a> *buf,                               const char *line)=NULL)</td></tr>
<tr class="memdesc:a4d18620a7dc9efd6c4f068315aad6a6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allow the user to choose the ioport device.  <a href="#a4d18620a7dc9efd6c4f068315aad6a6d">More...</a><br /></td></tr>
<tr class="separator:a4d18620a7dc9efd6c4f068315aad6a6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a663242ae8c05a853047602663019d984"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a663242ae8c05a853047602663019d984"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> const <a class="el" href="structioport__t.html">ioport_t</a> *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a663242ae8c05a853047602663019d984">find_ioport</a> (const <a class="el" href="classqvector.html">ioports_t</a> &amp;ports, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> address)</td></tr>
<tr class="memdesc:a663242ae8c05a853047602663019d984"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find ioport in the array of ioports. <br /></td></tr>
<tr class="separator:a663242ae8c05a853047602663019d984"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a614aa8ffd10c5101c7347cf2aa044d29"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a614aa8ffd10c5101c7347cf2aa044d29"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> const <a class="el" href="structioport__bit__t.html">ioport_bit_t</a> *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a614aa8ffd10c5101c7347cf2aa044d29">find_ioport_bit</a> (const <a class="el" href="classqvector.html">ioports_t</a> &amp;ports, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> address, size_t bit)</td></tr>
<tr class="memdesc:a614aa8ffd10c5101c7347cf2aa044d29"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find ioport bit in the array of ioports. <br /></td></tr>
<tr class="separator:a614aa8ffd10c5101c7347cf2aa044d29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5f565f04c002923eabc3d0ee2738f95"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#ad5f565f04c002923eabc3d0ee2738f95">call_system</a> (const char *command)</td></tr>
<tr class="memdesc:ad5f565f04c002923eabc3d0ee2738f95"><td class="mdescLeft">&#160;</td><td class="mdescRight">Execute a operating system command.  <a href="#ad5f565f04c002923eabc3d0ee2738f95">More...</a><br /></td></tr>
<tr class="separator:ad5f565f04c002923eabc3d0ee2738f95"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Open/Read/Write/Close Files</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>There are two sets of "open file" functions.</p>
<p>The first set tries to open a file and returns success or failure. The second set is "open or die": if the file cannot be opened then the function will display an error message and exit. </p>
</div></td></tr>
<tr class="memitem:af148cbe6ea37d7a666688f31c118f10a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#af148cbe6ea37d7a666688f31c118f10a">fopenWT</a> (const char *file)</td></tr>
<tr class="memdesc:af148cbe6ea37d7a666688f31c118f10a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a new file for write in text mode, deny write.  <a href="#af148cbe6ea37d7a666688f31c118f10a">More...</a><br /></td></tr>
<tr class="separator:af148cbe6ea37d7a666688f31c118f10a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a49a3324187b97c5ad0cf4f1699f2b6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a6a49a3324187b97c5ad0cf4f1699f2b6">fopenWB</a> (const char *file)</td></tr>
<tr class="memdesc:a6a49a3324187b97c5ad0cf4f1699f2b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a new file for write in binary mode, deny read/write.  <a href="#a6a49a3324187b97c5ad0cf4f1699f2b6">More...</a><br /></td></tr>
<tr class="separator:a6a49a3324187b97c5ad0cf4f1699f2b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4935dc4d05adf818f17c3851d0a5595"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#ac4935dc4d05adf818f17c3851d0a5595">fopenRT</a> (const char *file)</td></tr>
<tr class="memdesc:ac4935dc4d05adf818f17c3851d0a5595"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a file for read in text mode, deny none.  <a href="#ac4935dc4d05adf818f17c3851d0a5595">More...</a><br /></td></tr>
<tr class="separator:ac4935dc4d05adf818f17c3851d0a5595"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb8ea0ca1111bf2f0f9d0ea5ad0478c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#afb8ea0ca1111bf2f0f9d0ea5ad0478c0">fopenRB</a> (const char *file)</td></tr>
<tr class="memdesc:afb8ea0ca1111bf2f0f9d0ea5ad0478c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a file for read in binary mode, deny none.  <a href="#afb8ea0ca1111bf2f0f9d0ea5ad0478c0">More...</a><br /></td></tr>
<tr class="separator:afb8ea0ca1111bf2f0f9d0ea5ad0478c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae46f396e65c2f610432d06358d8b2649"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#ae46f396e65c2f610432d06358d8b2649">fopenM</a> (const char *file)</td></tr>
<tr class="memdesc:ae46f396e65c2f610432d06358d8b2649"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a file for read/write in binary mode, deny write.  <a href="#ae46f396e65c2f610432d06358d8b2649">More...</a><br /></td></tr>
<tr class="separator:ae46f396e65c2f610432d06358d8b2649"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9ccc5bffdcb90a0f49a45db3c503765"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#ac9ccc5bffdcb90a0f49a45db3c503765">fopenA</a> (const char *file)</td></tr>
<tr class="memdesc:ac9ccc5bffdcb90a0f49a45db3c503765"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a file for append in text mode, deny none.  <a href="#ac9ccc5bffdcb90a0f49a45db3c503765">More...</a><br /></td></tr>
<tr class="separator:ac9ccc5bffdcb90a0f49a45db3c503765"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ce96205d54dd19e2bf896b5731fb6e3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a4ce96205d54dd19e2bf896b5731fb6e3">openR</a> (const char *file)</td></tr>
<tr class="memdesc:a4ce96205d54dd19e2bf896b5731fb6e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a file for read in binary mode or die, deny none.  <a href="#a4ce96205d54dd19e2bf896b5731fb6e3">More...</a><br /></td></tr>
<tr class="separator:a4ce96205d54dd19e2bf896b5731fb6e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38e9b7c807e18f8304b3f6ea2647fa3d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a38e9b7c807e18f8304b3f6ea2647fa3d">openRT</a> (const char *file)</td></tr>
<tr class="memdesc:a38e9b7c807e18f8304b3f6ea2647fa3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a file for read in text mode or die, deny none.  <a href="#a38e9b7c807e18f8304b3f6ea2647fa3d">More...</a><br /></td></tr>
<tr class="separator:a38e9b7c807e18f8304b3f6ea2647fa3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a743a12d4f5a4f7363cb513bc8ba80942"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a743a12d4f5a4f7363cb513bc8ba80942">openM</a> (const char *file)</td></tr>
<tr class="memdesc:a743a12d4f5a4f7363cb513bc8ba80942"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a file for read/write in binary mode or die, deny write.  <a href="#a743a12d4f5a4f7363cb513bc8ba80942">More...</a><br /></td></tr>
<tr class="separator:a743a12d4f5a4f7363cb513bc8ba80942"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d0ba108198a1ab4115c69568875bfb6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a2d0ba108198a1ab4115c69568875bfb6">ecreate</a> (const char *file)</td></tr>
<tr class="memdesc:a2d0ba108198a1ab4115c69568875bfb6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a new file for write in binary mode or die, deny read/write.  <a href="#a2d0ba108198a1ab4115c69568875bfb6">More...</a><br /></td></tr>
<tr class="separator:a2d0ba108198a1ab4115c69568875bfb6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e2d79d10c50c6c4ce7fc0775699c3da"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a9e2d79d10c50c6c4ce7fc0775699c3da">eclose</a> (FILE *fp)</td></tr>
<tr class="memdesc:a9e2d79d10c50c6c4ce7fc0775699c3da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close a file or die.  <a href="#a9e2d79d10c50c6c4ce7fc0775699c3da">More...</a><br /></td></tr>
<tr class="separator:a9e2d79d10c50c6c4ce7fc0775699c3da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae41ce96552b2eb4111d9ecf3df7c3ed2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#ae41ce96552b2eb4111d9ecf3df7c3ed2">eread</a> (FILE *fp, void *buf, <a class="el" href="pro_8h.html#ab65ed42d67e6c517c746ff2a6a187016">ssize_t</a> size)</td></tr>
<tr class="memdesc:ae41ce96552b2eb4111d9ecf3df7c3ed2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read from file or die.  <a href="#ae41ce96552b2eb4111d9ecf3df7c3ed2">More...</a><br /></td></tr>
<tr class="separator:ae41ce96552b2eb4111d9ecf3df7c3ed2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a423ec5659cc19a1fa79717357a6b9a5c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a423ec5659cc19a1fa79717357a6b9a5c">ewrite</a> (FILE *fp, const void *buf, <a class="el" href="pro_8h.html#ab65ed42d67e6c517c746ff2a6a187016">ssize_t</a> size)</td></tr>
<tr class="memdesc:a423ec5659cc19a1fa79717357a6b9a5c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write to file or die.  <a href="#a423ec5659cc19a1fa79717357a6b9a5c">More...</a><br /></td></tr>
<tr class="separator:a423ec5659cc19a1fa79717357a6b9a5c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd6eac42313904a888988be4fae98d3d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#abd6eac42313904a888988be4fae98d3d">eseek</a> (FILE *fp, <a class="el" href="pro_8h.html#a42ae75d34f73b9e691bd16aaddb897e5">qoff64_t</a> pos)</td></tr>
<tr class="memdesc:abd6eac42313904a888988be4fae98d3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Position in the file or die.  <a href="#abd6eac42313904a888988be4fae98d3d">More...</a><br /></td></tr>
<tr class="separator:abd6eac42313904a888988be4fae98d3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Loader Input Source</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp5576da7c8b3de87b47bef4c92de16fc7"></a>Starting with v4.8 IDA can load and run remote files.</p>
<p>In order to do that, we replace the FILE* in the loader modules with an abstract input source (linput_t). The source might be linked to a local or remote file. </p>
</td></tr>
<tr class="memitem:ad79841c8b46cd9ddda6caa2c6c30fd7c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#ad79841c8b46cd9ddda6caa2c6c30fd7c">DEF_LREADBYTES</a>(read,  type,  size)                                          </td></tr>
<tr class="memdesc:ad79841c8b46cd9ddda6caa2c6c30fd7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper to define <a class="el" href="diskio_8hpp.html#a7a6ea681584b9bea963bb086f60e457f" title="Read a value from linput - also see lreadbytes() ">lread2bytes()</a>, <a class="el" href="diskio_8hpp.html#a601fa3b5b75e74f9072537bd69fcc8f2" title="Read a value from linput - also see lreadbytes() ">lread4bytes()</a>, etc.  <a href="#ad79841c8b46cd9ddda6caa2c6c30fd7c">More...</a><br /></td></tr>
<tr class="separator:ad79841c8b46cd9ddda6caa2c6c30fd7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0d44a8d9c28b414b8bf478053527261"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#ae0d44a8d9c28b414b8bf478053527261">linput_type_t</a> { <br />
&#160;&#160;<a class="el" href="diskio_8hpp.html#ae0d44a8d9c28b414b8bf478053527261aa4f6b761489c68c12afc06ebd0a67092">LINPUT_NONE</a>, 
<a class="el" href="diskio_8hpp.html#ae0d44a8d9c28b414b8bf478053527261a22774afca9c27ece76fbfef0229cc13a">LINPUT_LOCAL</a>, 
<a class="el" href="diskio_8hpp.html#ae0d44a8d9c28b414b8bf478053527261a26699ba48b90028658875e8ed4667894">LINPUT_RFILE</a>, 
<a class="el" href="diskio_8hpp.html#ae0d44a8d9c28b414b8bf478053527261a8f96a246abd549e32d4656b31f6b6be8">LINPUT_PROCMEM</a>, 
<br />
&#160;&#160;<a class="el" href="diskio_8hpp.html#ae0d44a8d9c28b414b8bf478053527261a248da4def192c3c35017fe579191471c">LINPUT_GENERIC</a>
<br />
 }</td></tr>
<tr class="memdesc:ae0d44a8d9c28b414b8bf478053527261"><td class="mdescLeft">&#160;</td><td class="mdescRight">loader input source  <a href="diskio_8hpp.html#ae0d44a8d9c28b414b8bf478053527261">More...</a><br /></td></tr>
<tr class="separator:ae0d44a8d9c28b414b8bf478053527261"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ae491fb8411c48f29f760ba14d6df84"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8ae491fb8411c48f29f760ba14d6df84"></a>
typedef <a class="el" href="structjanitor__t.html">janitor_t</a>&lt; linput_t * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a8ae491fb8411c48f29f760ba14d6df84">linput_janitor_t</a></td></tr>
<tr class="memdesc:a8ae491fb8411c48f29f760ba14d6df84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Object that will free an linput_t upon deletion. <br /></td></tr>
<tr class="separator:a8ae491fb8411c48f29f760ba14d6df84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ca35433be9bd3d2bd5457c71e9e5787"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a8ca35433be9bd3d2bd5457c71e9e5787">lread</a> (linput_t *li, void *buf, size_t size)</td></tr>
<tr class="memdesc:a8ca35433be9bd3d2bd5457c71e9e5787"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read the input source.  <a href="#a8ca35433be9bd3d2bd5457c71e9e5787">More...</a><br /></td></tr>
<tr class="separator:a8ca35433be9bd3d2bd5457c71e9e5787"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09e4ded38b809edfad79bcea9b579a9a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#ab65ed42d67e6c517c746ff2a6a187016">ssize_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a09e4ded38b809edfad79bcea9b579a9a">qlread</a> (linput_t *li, void *buf, size_t size)</td></tr>
<tr class="memdesc:a09e4ded38b809edfad79bcea9b579a9a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read the input source.  <a href="#a09e4ded38b809edfad79bcea9b579a9a">More...</a><br /></td></tr>
<tr class="separator:a09e4ded38b809edfad79bcea9b579a9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a499b5835786e3202fc218034b1e8fa3f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> char *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a499b5835786e3202fc218034b1e8fa3f">qlgets</a> (char *s, size_t len, linput_t *li)</td></tr>
<tr class="memdesc:a499b5835786e3202fc218034b1e8fa3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read one line from the input source.  <a href="#a499b5835786e3202fc218034b1e8fa3f">More...</a><br /></td></tr>
<tr class="separator:a499b5835786e3202fc218034b1e8fa3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af432736b5e8b11eab4d065d54115f2ff"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#af432736b5e8b11eab4d065d54115f2ff">qlgetc</a> (linput_t *li)</td></tr>
<tr class="memdesc:af432736b5e8b11eab4d065d54115f2ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read one character from the input source.  <a href="#af432736b5e8b11eab4d065d54115f2ff">More...</a><br /></td></tr>
<tr class="separator:af432736b5e8b11eab4d065d54115f2ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04d0326619f5f61b7d362d5993202fcd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a04d0326619f5f61b7d362d5993202fcd">lreadbytes</a> (linput_t *li, void *buf, size_t size, bool mf)</td></tr>
<tr class="memdesc:a04d0326619f5f61b7d362d5993202fcd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read multiple bytes and swap if necessary.  <a href="#a04d0326619f5f61b7d362d5993202fcd">More...</a><br /></td></tr>
<tr class="separator:a04d0326619f5f61b7d362d5993202fcd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a6ea681584b9bea963bb086f60e457f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7a6ea681584b9bea963bb086f60e457f"></a>
int <a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a7a6ea681584b9bea963bb086f60e457f">lread2bytes</a> (linput_t *li, <a class="el" href="pro_8h.html#a4355d16fcf9f644c9ac84293f0b1801f">int16</a> *res, bool mf)</td></tr>
<tr class="memdesc:a7a6ea681584b9bea963bb086f60e457f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a value from linput - also see <a class="el" href="diskio_8hpp.html#a04d0326619f5f61b7d362d5993202fcd" title="Read multiple bytes and swap if necessary. ">lreadbytes()</a> <br /></td></tr>
<tr class="separator:a7a6ea681584b9bea963bb086f60e457f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad588d267af8879b3f3325a2cc17f2b93"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad588d267af8879b3f3325a2cc17f2b93"></a>
int <a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#ad588d267af8879b3f3325a2cc17f2b93">lread2bytes</a> (linput_t *li, <a class="el" href="pro_8h.html#a05f6b0ae8f6a6e135b0e290c25fe0e4e">uint16</a> *res, bool mf)</td></tr>
<tr class="memdesc:ad588d267af8879b3f3325a2cc17f2b93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a value from linput - also see <a class="el" href="diskio_8hpp.html#a04d0326619f5f61b7d362d5993202fcd" title="Read multiple bytes and swap if necessary. ">lreadbytes()</a> <br /></td></tr>
<tr class="separator:ad588d267af8879b3f3325a2cc17f2b93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a601fa3b5b75e74f9072537bd69fcc8f2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a601fa3b5b75e74f9072537bd69fcc8f2"></a>
int <a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a601fa3b5b75e74f9072537bd69fcc8f2">lread4bytes</a> (linput_t *li, <a class="el" href="pro_8h.html#a56f1a81c92849566ae864511088eb7e8">int32</a> *res, bool mf)</td></tr>
<tr class="memdesc:a601fa3b5b75e74f9072537bd69fcc8f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a value from linput - also see <a class="el" href="diskio_8hpp.html#a04d0326619f5f61b7d362d5993202fcd" title="Read multiple bytes and swap if necessary. ">lreadbytes()</a> <br /></td></tr>
<tr class="separator:a601fa3b5b75e74f9072537bd69fcc8f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5dce928cf136d139a2d595bdd9d472d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5dce928cf136d139a2d595bdd9d472d"></a>
int <a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#ad5dce928cf136d139a2d595bdd9d472d">lread4bytes</a> (linput_t *li, <a class="el" href="pro_8h.html#a1134b580f8da4de94ca6b1de4d37975e">uint32</a> *res, bool mf)</td></tr>
<tr class="memdesc:ad5dce928cf136d139a2d595bdd9d472d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a value from linput - also see <a class="el" href="diskio_8hpp.html#a04d0326619f5f61b7d362d5993202fcd" title="Read multiple bytes and swap if necessary. ">lreadbytes()</a> <br /></td></tr>
<tr class="separator:ad5dce928cf136d139a2d595bdd9d472d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f61702506131b67d4b0827a5b7a44ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f61702506131b67d4b0827a5b7a44ff"></a>
int <a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a5f61702506131b67d4b0827a5b7a44ff">lread8bytes</a> (linput_t *li, <a class="el" href="pro_8h.html#af755b91e0abdf71f5715f00e68b35e0a">int64</a> *res, bool mf)</td></tr>
<tr class="memdesc:a5f61702506131b67d4b0827a5b7a44ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a value from linput - also see <a class="el" href="diskio_8hpp.html#a04d0326619f5f61b7d362d5993202fcd" title="Read multiple bytes and swap if necessary. ">lreadbytes()</a> <br /></td></tr>
<tr class="separator:a5f61702506131b67d4b0827a5b7a44ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d45179fb6b4b37a938fed51897953b4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2d45179fb6b4b37a938fed51897953b4"></a>
int <a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a2d45179fb6b4b37a938fed51897953b4">lread8bytes</a> (linput_t *li, <a class="el" href="pro_8h.html#a2f5563986d7f95e4fad5876c17d9cdda">uint64</a> *res, bool mf)</td></tr>
<tr class="memdesc:a2d45179fb6b4b37a938fed51897953b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a value from linput - also see <a class="el" href="diskio_8hpp.html#a04d0326619f5f61b7d362d5993202fcd" title="Read multiple bytes and swap if necessary. ">lreadbytes()</a> <br /></td></tr>
<tr class="separator:a2d45179fb6b4b37a938fed51897953b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf8e5a4965b46d9cfa740bcc00fab36b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> char *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#aaf8e5a4965b46d9cfa740bcc00fab36b">qlgetz</a> (linput_t *li, <a class="el" href="pro_8h.html#af755b91e0abdf71f5715f00e68b35e0a">int64</a> fpos, char *buf, size_t bufsize)</td></tr>
<tr class="memdesc:aaf8e5a4965b46d9cfa740bcc00fab36b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a zero-terminated string from the input.  <a href="#aaf8e5a4965b46d9cfa740bcc00fab36b">More...</a><br /></td></tr>
<tr class="separator:aaf8e5a4965b46d9cfa740bcc00fab36b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5df59b3b6c7a42d9092909e648d1229b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5df59b3b6c7a42d9092909e648d1229b"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#af755b91e0abdf71f5715f00e68b35e0a">int64</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a5df59b3b6c7a42d9092909e648d1229b">qlsize</a> (linput_t *li)</td></tr>
<tr class="memdesc:a5df59b3b6c7a42d9092909e648d1229b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the input source size. <br /></td></tr>
<tr class="separator:a5df59b3b6c7a42d9092909e648d1229b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e8219084ce648bd165dce32ffd49b47"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a42ae75d34f73b9e691bd16aaddb897e5">qoff64_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a5e8219084ce648bd165dce32ffd49b47">qlseek</a> (linput_t *li, <a class="el" href="pro_8h.html#a42ae75d34f73b9e691bd16aaddb897e5">qoff64_t</a> pos, int whence=<a class="el" href="pro_8h.html#a0d112bae8fd35be772185b6ec6bcbe64">SEEK_SET</a>)</td></tr>
<tr class="memdesc:a5e8219084ce648bd165dce32ffd49b47"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set input source position.  <a href="#a5e8219084ce648bd165dce32ffd49b47">More...</a><br /></td></tr>
<tr class="separator:a5e8219084ce648bd165dce32ffd49b47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5693d03f7ec90ef37e220cc84f979cd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab5693d03f7ec90ef37e220cc84f979cd"></a>
<a class="el" href="pro_8h.html#af755b91e0abdf71f5715f00e68b35e0a">int64</a> <a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#ab5693d03f7ec90ef37e220cc84f979cd">qltell</a> (linput_t *li)</td></tr>
<tr class="memdesc:ab5693d03f7ec90ef37e220cc84f979cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get input source position. <br /></td></tr>
<tr class="separator:ab5693d03f7ec90ef37e220cc84f979cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95fcd90c12537fe3c05af6ca13b8cedc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a95fcd90c12537fe3c05af6ca13b8cedc"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> linput_t *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a95fcd90c12537fe3c05af6ca13b8cedc">open_linput</a> (const char *file, bool remote)</td></tr>
<tr class="memdesc:a95fcd90c12537fe3c05af6ca13b8cedc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open loader input. <br /></td></tr>
<tr class="separator:a95fcd90c12537fe3c05af6ca13b8cedc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8dd2f622fe3728b6263a99f3354a11e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8dd2f622fe3728b6263a99f3354a11e5"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a8dd2f622fe3728b6263a99f3354a11e5">close_linput</a> (linput_t *li)</td></tr>
<tr class="memdesc:a8dd2f622fe3728b6263a99f3354a11e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close loader input. <br /></td></tr>
<tr class="separator:a8dd2f622fe3728b6263a99f3354a11e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a630a75484f9659bfa0c4a2b47568c193"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> FILE *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a630a75484f9659bfa0c4a2b47568c193">qlfile</a> (linput_t *li)</td></tr>
<tr class="memdesc:a630a75484f9659bfa0c4a2b47568c193"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get FILE* from the input source.  <a href="#a630a75484f9659bfa0c4a2b47568c193">More...</a><br /></td></tr>
<tr class="separator:a630a75484f9659bfa0c4a2b47568c193"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb35c33b8f3bb10570d8b05a5591344f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> linput_t *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#acb35c33b8f3bb10570d8b05a5591344f">make_linput</a> (FILE *fp)</td></tr>
<tr class="memdesc:acb35c33b8f3bb10570d8b05a5591344f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert FILE * to input source.  <a href="#acb35c33b8f3bb10570d8b05a5591344f">More...</a><br /></td></tr>
<tr class="separator:acb35c33b8f3bb10570d8b05a5591344f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16520e9995832bb7e39921e087f6440e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a16520e9995832bb7e39921e087f6440e"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a16520e9995832bb7e39921e087f6440e">unmake_linput</a> (linput_t *li)</td></tr>
<tr class="memdesc:a16520e9995832bb7e39921e087f6440e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free an linput_t object (also see <a class="el" href="diskio_8hpp.html#acb35c33b8f3bb10570d8b05a5591344f" title="Convert FILE * to input source. ">make_linput()</a>) <br /></td></tr>
<tr class="separator:a16520e9995832bb7e39921e087f6440e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b48d0193d11ca8bb5d1908f8d63be8a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> linput_t *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a7b48d0193d11ca8bb5d1908f8d63be8a">create_generic_linput</a> (<a class="el" href="structgeneric__linput__t.html">generic_linput_t</a> *gl)</td></tr>
<tr class="memdesc:a7b48d0193d11ca8bb5d1908f8d63be8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a generic linput.  <a href="#a7b48d0193d11ca8bb5d1908f8d63be8a">More...</a><br /></td></tr>
<tr class="separator:a7b48d0193d11ca8bb5d1908f8d63be8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40308471c679b700e45aea80d7dc8c01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a40308471c679b700e45aea80d7dc8c01"></a>
<a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> linput_t *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a40308471c679b700e45aea80d7dc8c01">create_bytearray_linput</a> (const <a class="el" href="pro_8h.html#a65f85814a8290f9797005d3b28e7e5fc">uchar</a> *start, size_t size)</td></tr>
<tr class="memdesc:a40308471c679b700e45aea80d7dc8c01"><td class="mdescLeft">&#160;</td><td class="mdescRight">Trivial memory linput. <br /></td></tr>
<tr class="separator:a40308471c679b700e45aea80d7dc8c01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa791cada90873dad95501ed0af8eefef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> linput_t *<a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#aa791cada90873dad95501ed0af8eefef">create_memory_linput</a> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> start, <a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a> size)</td></tr>
<tr class="memdesc:aa791cada90873dad95501ed0af8eefef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a linput for process memory.  <a href="#aa791cada90873dad95501ed0af8eefef">More...</a><br /></td></tr>
<tr class="separator:aa791cada90873dad95501ed0af8eefef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4602655be84c5761f9fa001264a4d8e5"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4602655be84c5761f9fa001264a4d8e5"></a>
<a class="el" href="diskio_8hpp.html#ae0d44a8d9c28b414b8bf478053527261">linput_type_t</a> <a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a4602655be84c5761f9fa001264a4d8e5">get_linput_type</a> (linput_t *li)</td></tr>
<tr class="memdesc:a4602655be84c5761f9fa001264a4d8e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get linput type. <br /></td></tr>
<tr class="separator:a4602655be84c5761f9fa001264a4d8e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga2aad3ea7f9cdeb2c80420bd8bb5b4f88"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2aad3ea7f9cdeb2c80420bd8bb5b4f88"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CFG_SUBDIR</b>&#160;&#160;&#160;&quot;cfg&quot;</td></tr>
<tr class="separator:ga2aad3ea7f9cdeb2c80420bd8bb5b4f88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf903627db4c1778bbd6046adb3d0a0a0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf903627db4c1778bbd6046adb3d0a0a0"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>IDC_SUBDIR</b>&#160;&#160;&#160;&quot;idc&quot;</td></tr>
<tr class="separator:gaf903627db4c1778bbd6046adb3d0a0a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga20aeb2f45e55769a7498db93b2142485"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga20aeb2f45e55769a7498db93b2142485"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>IDS_SUBDIR</b>&#160;&#160;&#160;&quot;ids&quot;</td></tr>
<tr class="separator:ga20aeb2f45e55769a7498db93b2142485"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga704ac794dd46d9d0ae6da99a2f8820bc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga704ac794dd46d9d0ae6da99a2f8820bc"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>IDP_SUBDIR</b>&#160;&#160;&#160;&quot;procs&quot;</td></tr>
<tr class="separator:ga704ac794dd46d9d0ae6da99a2f8820bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae9d911a561011cea8bafadcd8b0219a1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae9d911a561011cea8bafadcd8b0219a1"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LDR_SUBDIR</b>&#160;&#160;&#160;&quot;loaders&quot;</td></tr>
<tr class="separator:gae9d911a561011cea8bafadcd8b0219a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaae51517110937f194ef8dfef5f615afb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaae51517110937f194ef8dfef5f615afb"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>SIG_SUBDIR</b>&#160;&#160;&#160;&quot;sig&quot;</td></tr>
<tr class="separator:gaae51517110937f194ef8dfef5f615afb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae4de3781eb2695b7e9d8581a0e941a26"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae4de3781eb2695b7e9d8581a0e941a26"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>TIL_SUBDIR</b>&#160;&#160;&#160;&quot;til&quot;</td></tr>
<tr class="separator:gae4de3781eb2695b7e9d8581a0e941a26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab867659532e53ec819273ff11322d826"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab867659532e53ec819273ff11322d826"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>PLG_SUBDIR</b>&#160;&#160;&#160;&quot;plugins&quot;</td></tr>
<tr class="separator:gab867659532e53ec819273ff11322d826"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga97db79072ef2b4e4e10863efe3519691"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga97db79072ef2b4e4e10863efe3519691"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___i_d_a___s_u_b_d_i_r__.html#ga97db79072ef2b4e4e10863efe3519691">IDA_SUBDIR_IDP</a>&#160;&#160;&#160;0x0001</td></tr>
<tr class="memdesc:ga97db79072ef2b4e4e10863efe3519691"><td class="mdescLeft">&#160;</td><td class="mdescRight">append the processor name as a subdirectory <br /></td></tr>
<tr class="separator:ga97db79072ef2b4e4e10863efe3519691"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabcb378cbd826789a5474d8f4bc85c208"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gabcb378cbd826789a5474d8f4bc85c208"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CSIDL_APPDATA</b>&#160;&#160;&#160;0x001a</td></tr>
<tr class="separator:gabcb378cbd826789a5474d8f4bc85c208"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga86443d3467c24dae3bb85d7a61940c18"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga86443d3467c24dae3bb85d7a61940c18"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CSIDL_LOCAL_APPDATA</b>&#160;&#160;&#160;0x001c</td></tr>
<tr class="separator:ga86443d3467c24dae3bb85d7a61940c18"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0d02acecee16f342f6a354142293aa01"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0d02acecee16f342f6a354142293aa01"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CSIDL_PROGRAM_FILES</b>&#160;&#160;&#160;0x0026</td></tr>
<tr class="separator:ga0d02acecee16f342f6a354142293aa01"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga921ca7a872716343b3793efa72bc06ac"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga921ca7a872716343b3793efa72bc06ac"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CSIDL_PROGRAM_FILES_COMMON</b>&#160;&#160;&#160;0x002b</td></tr>
<tr class="separator:ga921ca7a872716343b3793efa72bc06ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaab2dbf30cf2f869ba6087cf8a4cc07ba"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaab2dbf30cf2f869ba6087cf8a4cc07ba"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CSIDL_PROGRAM_FILESX86</b>&#160;&#160;&#160;0x002a</td></tr>
<tr class="separator:gaab2dbf30cf2f869ba6087cf8a4cc07ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1dc222872230aa10c8d5742c48802512"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1dc222872230aa10c8d5742c48802512"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="diskio_8hpp.html#a1dc222872230aa10c8d5742c48802512">IOPORT_SKIP_DEVICE</a>&#160;&#160;&#160;((const char *)(-1))</td></tr>
<tr class="memdesc:a1dc222872230aa10c8d5742c48802512"><td class="mdescLeft">&#160;</td><td class="mdescRight">See 'parse_params' parameter to <a class="el" href="diskio_8hpp.html#a4d18620a7dc9efd6c4f068315aad6a6d" title="Allow the user to choose the ioport device. ">choose_ioport_device()</a> <br /></td></tr>
<tr class="separator:a1dc222872230aa10c8d5742c48802512"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:a5098007f1f127aaf418bb188ddb1e86b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5098007f1f127aaf418bb188ddb1e86b"></a>
typedef <a class="el" href="classqvector.html">qvector</a>&lt; <a class="el" href="structioport__bit__t.html">ioport_bit_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ioport_bits_t</b></td></tr>
<tr class="separator:a5098007f1f127aaf418bb188ddb1e86b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4331cf21ccc279890186df75a4999ef9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4331cf21ccc279890186df75a4999ef9"></a>
typedef <a class="el" href="classqvector.html">qvector</a>&lt; <a class="el" href="structioport__t.html">ioport_t</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ioports_t</b></td></tr>
<tr class="separator:a4331cf21ccc279890186df75a4999ef9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="ad79841c8b46cd9ddda6caa2c6c30fd7c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DEF_LREADBYTES</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">read, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">type, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">size&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"> \</div>
<div class="line">inline <span class="keywordtype">int</span> <a class="code" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a> read(linput_t *li, type *res, <span class="keywordtype">bool</span> mf)       \</div>
<div class="line">               { <span class="keywordflow">return</span> <a class="code" href="diskio_8hpp.html#a04d0326619f5f61b7d362d5993202fcd">lreadbytes</a>(li, res, size, mf); }</div>
<div class="ttc" id="diskio_8hpp_html_a04d0326619f5f61b7d362d5993202fcd"><div class="ttname"><a href="diskio_8hpp.html#a04d0326619f5f61b7d362d5993202fcd">lreadbytes</a></div><div class="ttdeci">idaman int ida_export lreadbytes(linput_t *li, void *buf, size_t size, bool mf)</div><div class="ttdoc">Read multiple bytes and swap if necessary. </div></div>
<div class="ttc" id="pro_8h_html_a6505e7ff3b129d8b17258304886fd133"><div class="ttname"><a href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a></div><div class="ttdeci">#define idaapi</div><div class="ttdoc">specifies __stdcall calling convention </div><div class="ttdef"><b>Definition:</b> pro.h:258</div></div>
</div><!-- fragment -->
<p>Helper to define <a class="el" href="diskio_8hpp.html#a7a6ea681584b9bea963bb086f60e457f" title="Read a value from linput - also see lreadbytes() ">lread2bytes()</a>, <a class="el" href="diskio_8hpp.html#a601fa3b5b75e74f9072537bd69fcc8f2" title="Read a value from linput - also see lreadbytes() ">lread4bytes()</a>, etc. </p>

</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="ae0d44a8d9c28b414b8bf478053527261"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="diskio_8hpp.html#ae0d44a8d9c28b414b8bf478053527261">linput_type_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>loader input source </p>
<p>linput types </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="ae0d44a8d9c28b414b8bf478053527261aa4f6b761489c68c12afc06ebd0a67092"></a>LINPUT_NONE&#160;</td><td class="fielddoc">
<p>invalid linput </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ae0d44a8d9c28b414b8bf478053527261a22774afca9c27ece76fbfef0229cc13a"></a>LINPUT_LOCAL&#160;</td><td class="fielddoc">
<p>local file </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ae0d44a8d9c28b414b8bf478053527261a26699ba48b90028658875e8ed4667894"></a>LINPUT_RFILE&#160;</td><td class="fielddoc">
<p>remote file ( debugger_t::open_file, debugger_t::read_file) </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ae0d44a8d9c28b414b8bf478053527261a8f96a246abd549e32d4656b31f6b6be8"></a>LINPUT_PROCMEM&#160;</td><td class="fielddoc">
<p>debugged process memory (read_dbg_memory()) </p>
</td></tr>
<tr><td class="fieldname"><a class="anchor" id="ae0d44a8d9c28b414b8bf478053527261a248da4def192c3c35017fe579191471c"></a>LINPUT_GENERIC&#160;</td><td class="fielddoc">
<p>generic linput </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a167af169b3e9ef95c00b0c793ddca17b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> char* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> getsysfile </td>
          <td>(</td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>bufsize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>filename</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>subdir</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Search for IDA system file. </p>
<p>This function searches for a file in:</p><ol type="1">
<li>each directory specified by IDAUSR%</li>
<li>ida directory [+ subdir] and returns the first match. <dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>buffer for file name </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">bufsize</td><td>size of output buffer </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">filename</td><td>name of file to search </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">subdir</td><td>if specified, the file is looked for in the specified subdirectory of the ida directory first (see <a class="el" href="group___s_u_b_d_i_r.html">IDA subdirectories</a>) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>NULL if not found, otherwise a pointer to full file name. </dd></dl>
</li>
</ol>

</div>
</div>
<a class="anchor" id="a6ead839a135d52262c7219dd67465042"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> const char* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_user_idadir </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get user ida related directory. </p>
<ul>
<li>if $IDAUSR is defined:<ul>
<li>the first element in $IDAUSR</li>
</ul>
</li>
<li>else<ul>
<li>default user directory ($HOME/.idapro or APPDATAHex-Rays/IDA Pro) </li>
</ul>
</li>
</ul>

</div>
</div>
<a class="anchor" id="ade45071848f6972b9ff86c9f2750afcb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_ida_subdirs </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a823b67c620f6cdca97e1d969ea4a9b02">qstrvec_t</a> *&#160;</td>
          <td class="paramname"><em>dirs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>subdir</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>flags</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get list of directories in which to find a specific IDA resource (see <a class="el" href="group___s_u_b_d_i_r.html">IDA subdirectories</a>). </p>
<p>The order of the resulting list is as follows:</p><ul>
<li>[$IDAUSR/subdir (0..N entries)]</li>
<li>$ENVVAR for backwards compatibility with some subdirs that could be overriden with environment variables, such as $IDASGN, $IDAIDS, $IDAIDC, and $IDATIL.</li>
<li>$IDADIR/subdir <dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">dirs</td><td>output vector for directory names </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">subdir</td><td>name of the resource to list </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">flags</td><td><a class="el" href="group___i_d_a___s_u_b_d_i_r__.html">Subdirectory modification flags</a> bits </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>number of directories appended to 'dirs' </dd></dl>
</li>
</ul>

</div>
</div>
<a class="anchor" id="aba3966c5fe94390b019ebb3f6b0adb5e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_special_folder </td>
          <td>(</td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>bufsize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>csidl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get a folder location by CSIDL (see <a class="el" href="group___c_s_i_d_l.html">Common CSIDLs</a>). </p>
<p>Path should be of at least MAX_PATH size </p>

</div>
</div>
<a class="anchor" id="ae85c4ea312c786873aebf704c289f57a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> enumerate_files </td>
          <td>(</td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>answer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>answer_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(<a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a> *)(const char *file, void *ud)&#160;</td>
          <td class="paramname"><em>func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>ud</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Enumerate files in the specified directory. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">answer</td><td>buffer to contain the file name for which func()!=0 (may be NULL) </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">answer_size</td><td>size of 'answer' </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">path</td><td>directory to enumerate files in </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">fname</td><td>mask of file names to enumerate </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">func</td><td>callback function called for each file<ul>
<li>file: full file name (with path)</li>
<li>ud: user data</li>
<li>if returns non-zero value, the enumeration is stopped and the return code is is returned to the caller. </li>
</ul>
</td></tr>
    <tr><td class="paramdir"></td><td class="paramname">ud</td><td>user data. this pointer will be passed to the callback function </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>zero or the code returned by 'func' </dd></dl>

</div>
</div>
<a class="anchor" id="af148cbe6ea37d7a666688f31c118f10a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> fopenWT </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open a new file for write in text mode, deny write. </p>
<p>If a file exists, it will be removed. </p><dl class="section return"><dt>Returns</dt><dd>NULL if failure </dd></dl>

</div>
</div>
<a class="anchor" id="a6a49a3324187b97c5ad0cf4f1699f2b6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> fopenWB </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open a new file for write in binary mode, deny read/write. </p>
<p>If a file exists, it will be removed. </p><dl class="section return"><dt>Returns</dt><dd>NULL if failure </dd></dl>

</div>
</div>
<a class="anchor" id="ac4935dc4d05adf818f17c3851d0a5595"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> fopenRT </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open a file for read in text mode, deny none. </p>
<dl class="section return"><dt>Returns</dt><dd>NULL if failure </dd></dl>

</div>
</div>
<a class="anchor" id="afb8ea0ca1111bf2f0f9d0ea5ad0478c0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> fopenRB </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open a file for read in binary mode, deny none. </p>
<dl class="section return"><dt>Returns</dt><dd>NULL if failure </dd></dl>

</div>
</div>
<a class="anchor" id="ae46f396e65c2f610432d06358d8b2649"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> fopenM </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open a file for read/write in binary mode, deny write. </p>
<dl class="section return"><dt>Returns</dt><dd>NULL if failure </dd></dl>

</div>
</div>
<a class="anchor" id="ac9ccc5bffdcb90a0f49a45db3c503765"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> fopenA </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open a file for append in text mode, deny none. </p>
<dl class="section return"><dt>Returns</dt><dd>NULL if failure </dd></dl>

</div>
</div>
<a class="anchor" id="a4ce96205d54dd19e2bf896b5731fb6e3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> openR </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open a file for read in binary mode or die, deny none. </p>
<p>If a file cannot be opened, this function displays a message and exits. </p>

</div>
</div>
<a class="anchor" id="a38e9b7c807e18f8304b3f6ea2647fa3d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> openRT </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open a file for read in text mode or die, deny none. </p>
<p>If a file cannot be opened, this function displays a message and exits. </p>

</div>
</div>
<a class="anchor" id="a743a12d4f5a4f7363cb513bc8ba80942"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> openM </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open a file for read/write in binary mode or die, deny write. </p>
<p>If a file cannot be opened, this function displays a message and exits. </p>

</div>
</div>
<a class="anchor" id="a2d0ba108198a1ab4115c69568875bfb6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> FILE* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> ecreate </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open a new file for write in binary mode or die, deny read/write. </p>
<p>If a file exists, it will be removed. If a file cannot be opened, this function displays a message and exits. </p>

</div>
</div>
<a class="anchor" id="a9e2d79d10c50c6c4ce7fc0775699c3da"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> eclose </td>
          <td>(</td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>fp</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Close a file or die. </p>
<p>If a file cannot be closed, this function displays a message and exits. </p>

</div>
</div>
<a class="anchor" id="ae41ce96552b2eb4111d9ecf3df7c3ed2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> eread </td>
          <td>(</td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>fp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#ab65ed42d67e6c517c746ff2a6a187016">ssize_t</a>&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read from file or die. </p>
<p>If a read error occurs, this function displays a message and exits. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">fp</td><td>pointer to file </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">buf</td><td>buffer to read in </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">size</td><td>number of bytes to read </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a423ec5659cc19a1fa79717357a6b9a5c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> ewrite </td>
          <td>(</td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>fp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#ab65ed42d67e6c517c746ff2a6a187016">ssize_t</a>&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Write to file or die. </p>
<p>If a write error occurs, this function displays a message and exits. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fp</td><td>pointer to file </td></tr>
    <tr><td class="paramname">buf</td><td>buffer to write </td></tr>
    <tr><td class="paramname">size</td><td>number of bytes to write </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="abd6eac42313904a888988be4fae98d3d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> eseek </td>
          <td>(</td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>fp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a42ae75d34f73b9e691bd16aaddb897e5">qoff64_t</a>&#160;</td>
          <td class="paramname"><em>pos</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Position in the file or die. </p>
<p>If an error occurs, this function displays a message and exits. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fp</td><td>pointer to file </td></tr>
    <tr><td class="paramname">pos</td><td>absolute position in the file </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a549d51c74356478392b1744907728417"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> <a class="el" href="pro_8h.html#a2f5563986d7f95e4fad5876c17d9cdda">uint64</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> qfsize </td>
          <td>(</td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>fp</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get length of file in bytes. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fp</td><td>pointer to file </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ac9aa9645007754c5b00b583ccf9e6092"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> echsize </td>
          <td>(</td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>fp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a2f5563986d7f95e4fad5876c17d9cdda">uint64</a>&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Change size of file or die. </p>
<p>If an error occurs, this function displays a message and exits. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">fp</td><td>pointer to file </td></tr>
    <tr><td class="paramname">size</td><td>new size of file </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="acfb54e29824152262ae08cb0c1f43934"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> <a class="el" href="pro_8h.html#a2f5563986d7f95e4fad5876c17d9cdda">uint64</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> get_free_disk_space </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get free disk space in bytes. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">path</td><td>name of any directory on the disk to get information about </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a07d4f92a339d4e297ad1c2f4c1762af3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> <a class="el" href="pro_8h.html#ab65ed42d67e6c517c746ff2a6a187016">ssize_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> read_ioports </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classqvector.html">ioports_t</a> *&#160;</td>
          <td class="paramname"><em>ports</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a386c10c6aa4340f1d63df85f40454fce">qstring</a> *&#160;</td>
          <td class="paramname"><em>device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *(<a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a> *)(                                                                                                                   const <a class="el" href="classqvector.html">ioports_t</a> &amp;ports,                                                                                                                   const char *line)&#160;</td>
          <td class="paramname"><em>callback</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read i/o port definitions from a config file. </p>
<p>Each device definition in the input file begins with a line like this:</p>
<pre class="fragment">.devicename </pre><p>After it go the port definitions in this format:</p>
<pre class="fragment">portname          address </pre><p>The bit definitions (optional) are represented like this:</p>
<pre class="fragment">portname.bitname  bitnumber </pre><p>Lines beginning with a space are ignored. comment lines should be started with ';' character.</p>
<p>The default device is specified at the start of the file:</p>
<pre class="fragment">.default device_name </pre><dl class="section note"><dt>Note</dt><dd>It is permissible to have a symbol mapped to several addresses but all addresses must be unique. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">ports</td><td>output vector </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">device</td><td>contains device name to load. If default_device[0] == 0 then the default device is determined by .default directive in the config file. </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">file</td><td>config file name </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">callback</td><td>callback to call when the input line can't be parsed normally.<ul>
<li>line: input line to parse</li>
<li>returns error message. if NULL, then the line is parsed ok. </li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>-1 on error or size of vector </dd></dl>

</div>
</div>
<a class="anchor" id="a4d18620a7dc9efd6c4f068315aad6a6d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> bool <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> choose_ioport_device </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a386c10c6aa4340f1d63df85f40454fce">qstring</a> *&#160;</td>
          <td class="paramname"><em>_device</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>file</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *(<a class="el" href="pro_8h.html#a6505e7ff3b129d8b17258304886fd133">idaapi</a> *)(                                                                                                                   <a class="el" href="pro_8h.html#a386c10c6aa4340f1d63df85f40454fce">qstring</a> *buf,                                                                                                                   const char *line)&#160;</td>
          <td class="paramname"><em>parse_params</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Allow the user to choose the ioport device. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">device</td><td>in: contains default device name. If default_device[0] == 0 then the default device is determined by .default directive in the config file. out: the selected device name </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">file</td><td>config file name </td></tr>
    <tr><td class="paramdir"></td><td class="paramname">parse_params</td><td>if present (non NULL), then defines a callback which will be called for all lines not starting with a dot (.) This callback may parse these lines are prepare a simple processor parameter string. This string will be displayed along with the device name. If it returns <a class="el" href="diskio_8hpp.html#a1dc222872230aa10c8d5742c48802512" title="See &#39;parse_params&#39; parameter to choose_ioport_device() ">IOPORT_SKIP_DEVICE</a>, then the current device will not be included in the list. </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">true</td><td>the user selected a device, its name is in 'device' </td></tr>
    <tr><td class="paramname">false</td><td>the selection was cancelled. if device=="NONE" upon return, then no devices were found in the configuration file </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ad5f565f04c002923eabc3d0ee2738f95"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#acb0b22a01885ebdb9ac572343bbc4dab">THREAD_SAFE</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> call_system </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>command</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Execute a operating system command. </p>
<p>This function suspends the interface (Tvision), runs the command and redraws the screen. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">command</td><td>command to execute. If NULL, an interactive shell is activated </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the error code returned by system() call </dd></dl>

</div>
</div>
<a class="anchor" id="a8ca35433be9bd3d2bd5457c71e9e5787"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> void <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> lread </td>
          <td>(</td>
          <td class="paramtype">linput_t *&#160;</td>
          <td class="paramname"><em>li</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read the input source. </p>
<p>If failed, inform the user and ask him if he wants to continue. If he does not, this function will not return (<a class="el" href="loader_8hpp.html#ac5e3189d54cc0c34924fb28ebacbbbc3" title="Display a message about a loader failure and stop the loading process. ">loader_failure()</a> will be called). This function may be called only from loaders! </p>

</div>
</div>
<a class="anchor" id="a09e4ded38b809edfad79bcea9b579a9a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#ab65ed42d67e6c517c746ff2a6a187016">ssize_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> qlread </td>
          <td>(</td>
          <td class="paramtype">linput_t *&#160;</td>
          <td class="paramname"><em>li</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read the input source. </p>
<dl class="section return"><dt>Returns</dt><dd>number of read bytes or -1 </dd></dl>

</div>
</div>
<a class="anchor" id="a499b5835786e3202fc218034b1e8fa3f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> char* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> qlgets </td>
          <td>(</td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">linput_t *&#160;</td>
          <td class="paramname"><em>li</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read one line from the input source. </p>
<dl class="section return"><dt>Returns</dt><dd>NULL if failure, otherwise 's' </dd></dl>

</div>
</div>
<a class="anchor" id="af432736b5e8b11eab4d065d54115f2ff"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> qlgetc </td>
          <td>(</td>
          <td class="paramtype">linput_t *&#160;</td>
          <td class="paramname"><em>li</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read one character from the input source. </p>
<dl class="section return"><dt>Returns</dt><dd>EOF if failure, otherwise the read character </dd></dl>

</div>
</div>
<a class="anchor" id="a04d0326619f5f61b7d362d5993202fcd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> int <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> lreadbytes </td>
          <td>(</td>
          <td class="paramtype">linput_t *&#160;</td>
          <td class="paramname"><em>li</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>mf</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read multiple bytes and swap if necessary. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">li</td><td>input file </td></tr>
    <tr><td class="paramname">buf</td><td>pointer to output buffer </td></tr>
    <tr><td class="paramname">size</td><td>number of bytes to read </td></tr>
    <tr><td class="paramname">mf</td><td>big endian? </td></tr>
  </table>
  </dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">0</td><td>ok </td></tr>
    <tr><td class="paramname">-1</td><td>failure </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aaf8e5a4965b46d9cfa740bcc00fab36b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> char* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> qlgetz </td>
          <td>(</td>
          <td class="paramtype">linput_t *&#160;</td>
          <td class="paramname"><em>li</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#af755b91e0abdf71f5715f00e68b35e0a">int64</a>&#160;</td>
          <td class="paramname"><em>fpos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>bufsize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read a zero-terminated string from the input. </p>
<p>If fpos == -1 then no seek will be performed. </p>

</div>
</div>
<a class="anchor" id="a5e8219084ce648bd165dce32ffd49b47"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> <a class="el" href="pro_8h.html#a42ae75d34f73b9e691bd16aaddb897e5">qoff64_t</a> <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> qlseek </td>
          <td>(</td>
          <td class="paramtype">linput_t *&#160;</td>
          <td class="paramname"><em>li</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a42ae75d34f73b9e691bd16aaddb897e5">qoff64_t</a>&#160;</td>
          <td class="paramname"><em>pos</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>whence</em> = <code><a class="el" href="pro_8h.html#a0d112bae8fd35be772185b6ec6bcbe64">SEEK_SET</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set input source position. </p>
<dl class="section return"><dt>Returns</dt><dd>the new position (not 0 as fseek!) </dd></dl>

</div>
</div>
<a class="anchor" id="a630a75484f9659bfa0c4a2b47568c193"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> FILE* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> qlfile </td>
          <td>(</td>
          <td class="paramtype">linput_t *&#160;</td>
          <td class="paramname"><em>li</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get FILE* from the input source. </p>
<p>If the input source is linked to a remote file, then return NULL. Otherwise return the underlying FILE* Please do not use this function if possible. </p>

</div>
</div>
<a class="anchor" id="acb35c33b8f3bb10570d8b05a5591344f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> linput_t* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> make_linput </td>
          <td>(</td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>fp</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Convert FILE * to input source. </p>
<p>Used for temporary linput_t objects - call <a class="el" href="diskio_8hpp.html#a16520e9995832bb7e39921e087f6440e" title="Free an linput_t object (also see make_linput()) ">unmake_linput()</a> to free the slot after the use. </p>

</div>
</div>
<a class="anchor" id="a7b48d0193d11ca8bb5d1908f8d63be8a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> linput_t* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> create_generic_linput </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structgeneric__linput__t.html">generic_linput_t</a> *&#160;</td>
          <td class="paramname"><em>gl</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a generic linput. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">gl</td><td>linput description. this object will be destroyed by <a class="el" href="diskio_8hpp.html#a8dd2f622fe3728b6263a99f3354a11e5" title="Close loader input. ">close_linput()</a> using "delete gl;" </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa791cada90873dad95501ed0af8eefef"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="pro_8h.html#a8ddba56b40c4be92718f8059abf51147">idaman</a> linput_t* <a class="el" href="pro_8h.html#a176294e75f953787714b9d08ffa89adf">ida_export</a> create_memory_linput </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td>
          <td class="paramname"><em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="pro_8h.html#adbc570541d9f9a0c4489f9f1fe5f5699">asize_t</a>&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a linput for process memory. </p>
<p>This linput will use read_dbg_memory() to read data. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">start</td><td>starting address of the input </td></tr>
    <tr><td class="paramname">size</td><td>size of the memory area to represent as linput if unknown, may be passed as 0 </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>
